home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 21 / Cream of the Crop 21 (Terry Blount) (October 1996).iso / doom / qplus10.zip / OGRE.QC < prev    next >
Text File  |  1996-08-17  |  16KB  |  485 lines

  1. /*
  2. ==============================================================================
  3.  
  4. OGRE
  5.  
  6. ==============================================================================
  7. */
  8.  
  9. $cd /raid/quake/id1/models/ogre_c
  10. $origin 0 0 24
  11. $base base        
  12. $skin base
  13.  
  14. $frame    stand1 stand2 stand3 stand4 stand5 stand6 stand7 stand8 stand9
  15.  
  16. $frame walk1 walk2 walk3 walk4 walk5 walk6 walk7
  17. $frame walk8 walk9 walk10 walk11 walk12 walk13 walk14 walk15 walk16
  18.  
  19. $frame run1 run2 run3 run4 run5 run6 run7 run8
  20.  
  21. $frame swing1 swing2 swing3 swing4 swing5 swing6 swing7
  22. $frame swing8 swing9 swing10 swing11 swing12 swing13 swing14
  23.  
  24. $frame smash1 smash2 smash3 smash4 smash5 smash6 smash7
  25. $frame smash8 smash9 smash10 smash11 smash12 smash13 smash14
  26.  
  27. $frame shoot1 shoot2 shoot3 shoot4 shoot5 shoot6
  28.  
  29. $frame pain1 pain2 pain3 pain4 pain5
  30.  
  31. $frame painb1 painb2 painb3
  32.  
  33. $frame painc1 painc2 painc3 painc4 painc5 painc6
  34.  
  35. $frame paind1 paind2 paind3 paind4 paind5 paind6 paind7 paind8 paind9 paind10
  36. $frame paind11 paind12 paind13 paind14 paind15 paind16
  37.  
  38. $frame paine1 paine2 paine3 paine4 paine5 paine6 paine7 paine8 paine9 paine10
  39. $frame paine11 paine12 paine13 paine14 paine15
  40.  
  41. $frame death1 death2 death3 death4 death5 death6
  42. $frame death7 death8 death9 death10 death11 death12
  43. $frame death13 death14
  44.  
  45. $frame bdeath1 bdeath2 bdeath3 bdeath4 bdeath5 bdeath6
  46. $frame bdeath7 bdeath8 bdeath9 bdeath10
  47.  
  48. $frame pull1 pull2 pull3 pull4 pull5 pull6 pull7 pull8 pull9 pull10 pull11
  49.  
  50. //=============================================================================
  51.  
  52.  
  53. void() OgreGrenadeExplode =
  54. {
  55.     T_RadiusDamage (self, self.owner, 40, world);
  56.     sound (self, CHAN_VOICE, "weapons/r_exp3.wav", 1, ATTN_NORM);
  57.  
  58.     WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
  59.     WriteByte (MSG_BROADCAST, TE_EXPLOSION);
  60.     WriteCoord (MSG_BROADCAST, self.origin_x);
  61.     WriteCoord (MSG_BROADCAST, self.origin_y);
  62.     WriteCoord (MSG_BROADCAST, self.origin_z);
  63.  
  64.     self.velocity = '0 0 0';
  65.     self.touch = SUB_Null;
  66.     setmodel (self, "progs/s_explod.spr");
  67.     self.solid = SOLID_NOT;
  68.     s_explode1 ();
  69. };
  70.  
  71. void() OgreGrenadeTouch =
  72. {
  73.     if (other == self.owner)
  74.         return;        // don't explode on owner
  75.     if (other.takedamage == DAMAGE_AIM)
  76.     {
  77.         OgreGrenadeExplode();
  78.         return;
  79.     }
  80.     sound (self, CHAN_VOICE, "weapons/bounce.wav", 1, ATTN_NORM);    // bounce sound
  81.     if (self.velocity == '0 0 0')
  82.         self.avelocity = '0 0 0';
  83. };
  84.  
  85. /*
  86. ================
  87. OgreFireGrenade
  88. ================
  89. */
  90. void() OgreFireGrenade =
  91. {
  92.     local    entity missile, mpuff;
  93.     local float zchange;        //ws
  94.  
  95.     self.effects = self.effects | EF_MUZZLEFLASH;
  96.  
  97.     sound (self, CHAN_WEAPON, "weapons/grenade.wav", 1, ATTN_NORM);
  98.  
  99.     missile = spawn ();
  100.     missile.owner = self;
  101.     missile.movetype = MOVETYPE_BOUNCE;
  102.     missile.solid = SOLID_BBOX;
  103.         
  104. // set missile speed    
  105.  
  106.     makevectors (self.angles);
  107.  
  108.     missile.velocity = normalize(self.enemy.origin - self.origin);
  109.     missile.velocity = missile.velocity * 600;
  110.     missile.velocity_z = 200;
  111.  
  112. // here's the hack for z-aiming                    //ws...
  113.     zchange = self.origin_z - self.enemy.origin_z;
  114.     missile.velocity_z = missile.velocity_z - (zchange+10);
  115. // end hack                            //...ws
  116.  
  117.     missile.avelocity = '300 300 300';
  118.     missile.angles = vectoangles(missile.velocity);
  119.     missile.touch = OgreGrenadeTouch;
  120.     
  121. // set missile duration
  122.     missile.nextthink = time + 2.5;
  123.     missile.think = OgreGrenadeExplode;
  124.  
  125.     setmodel (missile, "progs/grenade.mdl");
  126.     setsize (missile, '0 0 0', '0 0 0');        
  127.     setorigin (missile, self.origin);
  128. };
  129.  
  130.  
  131. //=============================================================================
  132.  
  133. /*
  134. ================
  135. chainsaw
  136.  
  137. FIXME
  138. ================
  139. */
  140. void(float side) chainsaw =
  141. {
  142. local vector    delta;
  143. local float     ldmg;
  144.  
  145.     if (!self.enemy)
  146.         return;
  147.     if (!CanDamage (self.enemy, self))
  148.         return;
  149.  
  150.     ai_charge(10);
  151.  
  152.     delta = self.enemy.origin - self.origin;
  153.  
  154.     if (vlen(delta) > 100)
  155.         return;
  156.         
  157.     ldmg = (random() + random() + random()) * 4;
  158.     T_Damage (self.enemy, self, self, ldmg);
  159.     
  160.     if (side)
  161.     {
  162.         makevectors (self.angles);
  163.         if (side == 1)
  164.             SpawnMeatSpray (self.origin + v_forward*16, crandom() * 100 * v_right);
  165.         else
  166.             SpawnMeatSpray (self.origin + v_forward*16, side * v_right);
  167.     }
  168. };
  169.  
  170.  
  171. void() ogre_stand1    =[    $stand1,    ogre_stand2    ] {ai_stand();};
  172. void() ogre_stand2    =[    $stand2,    ogre_stand3    ] {ai_stand();};
  173. void() ogre_stand3    =[    $stand3,    ogre_stand4    ] {ai_stand();};
  174. void() ogre_stand4    =[    $stand4,    ogre_stand5    ] {ai_stand();};
  175. void() ogre_stand5    =[    $stand5,    ogre_stand6    ] {
  176. if (random() < 0.2)
  177.     sound (self, CHAN_VOICE, "ogre/ogidle.wav", 1, ATTN_IDLE);
  178. ai_stand();
  179. };
  180. void() ogre_stand6    =[    $stand6,    ogre_stand7    ] {ai_stand();};
  181. void() ogre_stand7    =[    $stand7,    ogre_stand8    ] {ai_stand();};
  182. void() ogre_stand8    =[    $stand8,    ogre_stand9    ] {ai_stand();};
  183. void() ogre_stand9    =[    $stand9,    ogre_stand1    ] {ai_stand();};
  184.  
  185. void() ogre_walk1    =[    $walk1,        ogre_walk2    ] {ai_walk(3);};
  186. void() ogre_walk2    =[    $walk2,        ogre_walk3    ] {ai_walk(2);};
  187. void() ogre_walk3    =[    $walk3,        ogre_walk4    ] {
  188. ai_walk(2);
  189. if (random() < 0.2)
  190.     sound (self, CHAN_VOICE, "ogre/ogidle.wav", 1, ATTN_IDLE);
  191. };
  192. void() ogre_walk4    =[    $walk4,        ogre_walk5    ] {ai_walk(2);};
  193. void() ogre_walk5    =[    $walk5,        ogre_walk6    ] {ai_walk(2);};
  194. void() ogre_walk6    =[    $walk6,        ogre_walk7    ] {
  195. ai_walk(5);
  196. if (random() < 0.1)
  197.     sound (self, CHAN_VOICE, "ogre/ogdrag.wav", 1, ATTN_IDLE);
  198. };
  199. void() ogre_walk7    =[    $walk7,        ogre_walk8    ] {ai_walk(3);};
  200. void() ogre_walk8    =[    $walk8,        ogre_walk9    ] {ai_walk(2);};
  201. void() ogre_walk9    =[    $walk9,        ogre_walk10    ] {ai_walk(3);};
  202. void() ogre_walk10    =[    $walk10,    ogre_walk11    ] {ai_walk(1);};
  203. void() ogre_walk11    =[    $walk11,    ogre_walk12    ] {ai_walk(2);};
  204. void() ogre_walk12    =[    $walk12,    ogre_walk13    ] {ai_walk(3);};
  205. void() ogre_walk13    =[    $walk13,    ogre_walk14    ] {ai_walk(3);};
  206. void() ogre_walk14    =[    $walk14,    ogre_walk15    ] {ai_walk(3);};
  207. void() ogre_walk15    =[    $walk15,    ogre_walk16    ] {ai_walk(3);};
  208. void() ogre_walk16    =[    $walk16,    ogre_walk1    ] {ai_walk(4);};
  209.  
  210. void() ogre_run1    =[    $run1,        ogre_run2    ] {ai_run(9);
  211. if (random() < 0.2)
  212.     sound (self, CHAN_VOICE, "ogre/ogidle2.wav", 1, ATTN_IDLE);
  213. };
  214. void() ogre_run2    =[    $run2,        ogre_run3    ] {ai_run(12);};
  215. void() ogre_run3    =[    $run3,        ogre_run4    ] {ai_run(8);};
  216. void() ogre_run4    =[    $run4,        ogre_run5    ] {ai_run(22);};
  217. void() ogre_run5    =[    $run5,        ogre_run6    ] {ai_run(16);};
  218. void() ogre_run6    =[    $run6,        ogre_run7    ] {ai_run(4);};
  219. void() ogre_run7    =[    $run7,        ogre_run8    ] {ai_run(13);};
  220. void() ogre_run8    =[    $run8,        ogre_run1    ] {ai_run(24);};
  221.  
  222. void() ogre_swing1    =[    $swing1,        ogre_swing2    ] {ai_charge(11);
  223. sound (self, CHAN_WEAPON, "ogre/ogsawatk.wav", 1, ATTN_NORM);
  224. };
  225. void() ogre_swing2    =[    $swing2,        ogre_swing3    ] {ai_charge(1);};
  226. void() ogre_swing3    =[    $swing3,        ogre_swing4    ] {ai_charge(4);};
  227. void() ogre_swing4    =[    $swing4,        ogre_swing5    ] {ai_charge(13);};
  228. void() ogre_swing5    =[    $swing5,        ogre_swing6    ] {ai_charge(9); chainsaw(0);self.angles_y = self.angles_y + random()*25;};
  229. void() ogre_swing6    =[    $swing6,        ogre_swing7    ] {chainsaw(200);self.angles_y = self.angles_y + random()* 25;};
  230. void() ogre_swing7    =[    $swing7,        ogre_swing8    ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
  231. void() ogre_swing8    =[    $swing8,        ogre_swing9    ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
  232. void() ogre_swing9    =[    $swing9,        ogre_swing10 ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
  233. void() ogre_swing10    =[    $swing10,        ogre_swing11 ] {chainsaw(-200);self.angles_y = self.angles_y + random()* 25;};
  234. void() ogre_swing11    =[    $swing11,        ogre_swing12 ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
  235. void() ogre_swing12    =[    $swing12,        ogre_swing13 ] {ai_charge(3);};
  236. void() ogre_swing13    =[    $swing13,        ogre_swing14 ] {ai_charge(8);};
  237. void() ogre_swing14    =[    $swing14,        ogre_run1    ] {ai_charge(9);};
  238.  
  239. void() ogre_smash1    =[    $smash1,        ogre_smash2    ] {ai_charge(6);
  240. sound (self, CHAN_WEAPON, "ogre/ogsawatk.wav", 1, ATTN_NORM);
  241. };
  242. void() ogre_smash2    =[    $smash2,        ogre_smash3    ] {ai_charge(0);};
  243. void() ogre_smash3    =[    $smash3,        ogre_smash4    ] {ai_charge(0);};
  244. void() ogre_smash4    =[    $smash4,        ogre_smash5    ] {ai_charge(1);};
  245. void() ogre_smash5    =[    $smash5,        ogre_smash6    ] {ai_charge(4);};
  246. void() ogre_smash6    =[    $smash6,        ogre_smash7    ] {ai_charge(4); chainsaw(0);};
  247. void() ogre_smash7    =[    $smash7,        ogre_smash8    ] {ai_charge(4); chainsaw(0);};
  248. void() ogre_smash8    =[    $smash8,        og